package lovely.gwt.jsonrpc.client;

import rocket.json.client.JsonSerializable;
import rocket.remoting.client.JsonRpcService;

import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.rpc.ServiceDefTarget;

/**
 * A maker interface that marks a interface as being a JsonRpcService supports
 * json-rpc specification 1.1.
 * Many of the steps involvedin creating a JsonRpcService are similar to those
 * required to create a GWT JsonRpcService.
 * <ul>
 * <li>A service interface which must extends {@link JsonRpcService}.</li>
 * <li>The return type of the service interface and all types referenced must
 * implement {@link JsonSerializable}</li>
 * <li>An async interface following similar rules to that of
 * {@link JsonRpcService}</li>
 * <li>All async methods must return void</li>
 * <li>All methods from the service interface must also appear in the async
 * interface, same name, same arguments plus a trailing {@link AsyncCallback}
 * parameter</li>
 * <li>The service address must be set after casting to
 * {@link ServiceDefTarget} and calling {@link ServiceDefTarget#setServiceEntry}
 * </ul>
 * 
 * @author Stefan Martin
 */
public interface JsonRpc11Service extends JsonRpcService {

}
